#pragma once

namespace AVUI {

class DefaultValueFactory : public Object
{
public:
    DECLARE_ELEMENT(DefaultValueFactory, Object);

protected:
#pragma region Protected Methods
    DefaultValueFactory() { };
#pragma endregion
public:
#pragma region Internal Methods
    virtual TRefCountedPtr<Object> CreateDefaultValue(DependencyObject* pOwner, DependencyProperty* pProperty) = 0;
    virtual TRefCountedPtr<Object> get_DefaultValue() = 0;
#pragma endregion Internal Methods
};


}; // namespace AVUI

